import axios from "axios";

// const router = useRouter();
const instance = axios.create({
  baseURL: import.meta.env.VITE_APP_URL,
  timeout: 5000000, // 超时时间
});

// 如果是js模块中访问store中的数据，需要放在一个函数中操作，不要把  useXXXStore() 函数的调用放在JS模块的顶层使用
// 例子：比如在请求拦截器中、路由前置守卫中、在一个sotre访问其他的store
// 核心点就是等待 app.use(pinia); 执行之后，再去执行 useXXXStore() 函数

instance.interceptors.request.use(
  (config) => {
    return config;
  },
  (err) => {
    // 请求失败
    return Promise.reject(err);
  }
);

instance.interceptors.response.use(
  (response) => {
    // 响应数据成功
    return response.data;
  },
  (err) => {
    // 响应数据失败
    return Promise.reject(err);
  }
);

const callApi = (method = "GET", url, data = {}) => {
  return instance({
    method,
    url,
    params: method === "GET" ? data : {},
    data: method === "POST" ? data : {},
  });
};

// 封装一个GET请求函数
export const getApi = (url, data) => callApi("GET", url, data);
// 封装一个post请求函数
export const postApi = (url, data) => callApi("POST", url, data);
